package Java7_Concurrency_Cookbook.concurrent_custom.custom_fork_join_task;

import java.util.concurrent.ForkJoinPool;

/**
 * <b>定制运行在Fork/Join框架中的任务</b>
 * ForkJoinPool执行的任务是ForkJoinTask类的对象.<br/>
 * 我们也可以传递Runnable和Callable对象到ForkJoinPool类中, 但是它们不会利用Fork/Join框架的优势<br/>
 * 一般来说, 我们将ForkJoinTask的两个子类传递给ForkJoinPool对象, 即: RecursiveAction, RecursiveTask.<br/>
 * 此示例中, 我们自定义实现了ForkJoinTask接口, 让ForkJoinPool对象执行.
 * @author lixiangke
 * @date 2017/11/28
 */
public class Main {
    public static void main(String[] args) {
        int[] array = new int[10000];
        ForkJoinPool pool = new ForkJoinPool();
        Task task = new Task("Zoom", array, 0, array.length);
        pool.invoke(task);
        pool.shutdown();
        System.out.println("Main: End of the program.");
    }
}
